לא פעם ראיתי את הקוד הבא:
if (isset($_POST['submit'])) {
// Now validate the form...

מה הקטע? זה לא כאילו שזה מה שקובע שהטופס נשלח מאיפה שהוא היה אמור או משהו כזה (אם זו המטרה)...

17 תשובות

avatar ענה razand ב 17 למרץ 2013 #

אם זה נשלח זה בטוח שמישהו שלח את הטופס
ואז אפשר להתחיל לבדוק את שאר הדברים...

avatar ענה nocksh ב 17 למרץ 2013 #

זה הגיוני שהטופס נשלח אם הכפתור של השליחה גם נשלח, אבל אם אי רוצה להציק אפשר לשלוח רק אותו בלי השדות האחרים. אז עדיף לבדוק את שאר השדות היותר חשובים...

avatar ענה ldbrgr ב 17 למרץ 2013 #

זאת הדרך של ספגטי קידס לבדוק את הmethod של הבקשה, אם אתה רואה מישהו כותב קוד כזה תן לו כפה!

avatar ענה Ben ב 18 למרץ 2013 #

ldbrgr, מה רע בשורה הזו ?

avatar ענה ldbrgr ב 18 למרץ 2013 #

אני מאמין שהרבה מפתחים עומדים מאחורי השורה הזאת אבל אפחד לא רוצה להתבטות בצורה כזאת, ומבחינתי הגיע היום לשבור את הכלים D:

avatar ענה iiddaannyy ב 18 למרץ 2013 #

הקטע הוא שאנשים לא מבינים שזה שכפתור אחד נשלח לא אומר שכל שאר השדות נשלחו.
לכן, כשרוצים לבדוק שהטופס נשלח בודקים את כל השדות.

avatar ענה liorel100 ב 18 למרץ 2013 #

אפשר לשלוח רק את השדה הזה עם סוקט לדוגמה, קוד כזה הוא הודי.

avatar ענה razand ב 18 למרץ 2013 #

@iiddaannyy
ומה זה משנה עם אתה משתמש בקוד הזה
ורק אם הוא נכון זה מתחיל לבדוק את שאר השדות

avatar ענה mayden ב 18 למרץ 2013 #

כי ברגע שאתה עושה פעולות מסויימות עם המסד וכו' אתה מתחיל לעשות אותם אחרי שמשהו קרה..

אחרי שהמשתמש התחבר, אחרי שהמשתמש נרשם.. ובדרך לוחצים על הSUBMIT בטופס ואז מתחיל רצף הפעולות.

avatar ענה iiddaannyy ב 18 למרץ 2013 #

זה משנה.
כי זה שלחצו על כפתור login לא בהכרח אומר ששלחו את השדות username ו-password. וכשתנסה לגשת אליהם מבלי שבדקת האם הם נשלחו (כי בדקת רק את login) תקבל שגיאה.

avatar ענה ldbrgr ב 19 למרץ 2013 #

לא רק, זאת לא צורה לבדוק request method.
יום יבוא ונרצה להוסיף אפשרות לשלוח את הטופס בAJAX (או משהו בסגנון) ואז מה? נצטרך לדחוף איזה שיקוף של קלט (שלא רק שלא עוזר, גם מפריע) לקוד? למה? אפשר לחסוך את כל הבלגן הזה ^^^ אם חושבים קצת קדימה ובודקים את הrequest method לפי ה request method הבנתם? (אני לא)

avatar ענה razand ב 19 למרץ 2013 #

@iiddaannyy
אבל בודקים אותם אחרי השורה הזאת..

avatar ענה mayden ב 19 למרץ 2013 #

עידן, זה כל רצף הפעולות - בודקים אם הטופס נשלח, השדות הספיצפיים וכו'.

avatar ענה OrelBeY ב 19 למרץ 2013 #

זהו, שהמונח שבו אתה משתמש, "הטופס נשלח", הוא שגוי לחלוטין. זה שנשלח שדה קלט בשם submit לא בהכרח אומר שזה מאותו טופס שאתה מדבר עליו.

avatar ענה razand ב 19 למרץ 2013 #

זה אומר שהטופס נשלח.
ואם הטופס באמת נשלח אז בודקים גם עם שאר השדות נשלח...

avatar ענה iiddaannyy ב 19 למרץ 2013 #

אני בכלל לא מבין למה צריכים לשלוח את כפתור ה-submit. למה בכלל לתת לו name? למי אכפת ממנו? אתם משתמשים בו בשרת?

נותנים שם רק לשדות שאנחנו רוצים לשלוח והתוכן שלהם מעניין אותנו:

<?php
if (isset($_POST['username'], $_POST['password'])) {
    ...
}
?>
<form action="" method="post">
    username: <input tyoe="text" name="username" /><br />
    password: <input type="password" name="password" /><br />
    <br />
    <input type="submit" value="login" />
</form>

avatar ענה OrelBeY ב 19 למרץ 2013 #

@razand, זה לא אומר שהטופס נשלח. זה אומר שהתקבל נתון בשיטת POST העונה לשם submit.
@iiddaannyy, נתת מקרה שבו דווקא כן צריך לבדוק submit, רק שמובן שזה עדיין לא הולך להעיד שהטופס נשלח. :-)